﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using Talento21.Negocio.Servicio;

namespace Talento21
{
    public partial class MasterPage : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.siteMapMenu.StartingNodeUrl = GetParenOfCurrentNode(SiteMap.CurrentNode);

            List<String> mensajes = (List<String>)Session["mensaje-success"];
            if (mensajes != null)
            {
                Mensajes.Attributes.Add("class", "alert alert-success");
                foreach (var item in mensajes)
                {
                    Mensajes.InnerHtml += item + "<br />";        
                }
                Session.Remove("mensaje-success");
            }
            else
            {
                Mensajes.InnerHtml = "";
                Mensajes.Attributes.Clear();
            }
        }


        public void AgregarMensaje(String mensaje)
        {
            List<String> mensajes = (List<String>) Session["mensaje-success"];
            if (mensajes == null)
            {
                mensajes = new List<string>();
            }

            mensajes.Add(mensaje);
     
            Session.Add("mensaje-success", mensajes);
        }


        private string GetParenOfCurrentNode(SiteMapNode node)
        {
            if (node == null)
            {
                return "";
            }

            if (node.ParentNode == SiteMap.RootNode)
            {
                return node.Url;
            }
            else
            {
                return GetParenOfCurrentNode(node.ParentNode);
            }

        }

        public string GetClassOFCurrentNode(String url)
        {
            return GetCSSClassOfCurrentNode(SiteMap.CurrentNode, url);
        }

        private string GetCSSClassOfCurrentNode(SiteMapNode node, String url)
        {
            if (node == null)
            {
                return "";
            }


            if (node.Url == url)
            {
                return "active";
            }
            else
            {
                return GetCSSClassOfCurrentNode(node.ParentNode, url);
            }

        }

        protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
        }

        protected void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
        {

            SiteMapNode node = (SiteMapNode)e.Item.DataItem;

            if (node != null)
            {
                if (node.Description == "hidden")
                {
                    e.Item.Visible = false;
                }
                else if(node.Roles != null && node.Roles.Count > 0)
                {
                    bool visible = false;
                    foreach (var item in node.Roles)
                    {
                        visible |= Roles.IsUserInRole(item.ToString());                        
                    }


                    e.Item.Visible = visible;
                }
            }
        }

        protected void LoginStatus1_Load(object sender, EventArgs e)
        {
            if (Request.IsAuthenticated)
            {
               


            }
        }
    }
}